polymorphism (continued)
[polymorphism]
參數與回傳型別也可以是實際物件型別的superclass,ex.
[參數]
class Feed{
public void giveFood(pet i){
i.eat;
}
}
//像這樣,我若將參數部分用Pet此型別物件的話,那麼我可以將使用Pet的subclass放入,像是Dog,Cat,Fish,並執行Feed的動作
[return type]
class Me{
public void start(){
Feed f = new Feed();
Dog d = new Dog();
Cat c = new Cat();
f.givefood(d);
f.givefood(c);
//會執行他們(d和c)各自的eat的動作
//只要我傳入的是Pet的subclass,皆能使用Feed的method
}
}
[如何防止class被做出subclass]
1.存取控制: 不將class標示為public;這種class只能被同個package內的class去做出subclas
[附註]
class是不得被宣告為private的
2.使用final的class:是不能被繼承的class
3.讓class只有private的constructor
[why use final?]
為了確保所有method都會是我寫的版本;若要防指特定method被override,也可以只對method標上final